# -*- coding: latin-1 -*-
import sys,  codecs
from PyQt4.QtGui import QDataWidgetMapper,  QDialog
from PyQt4.QtSql import QSqlQuery
from PyQt4.QtCore import QVariant,  SIGNAL,  QDate

sys.path.append("../")

from vista.altaMascota_vista import Ui_FormAltaMascota
from modelo.mascota_modelo import mascota_modelo 
from modelo.duenio_modelo import duenio_modelo

DEBUG = False

class altaMascota_controlador(Ui_FormAltaMascota):
    def __init__(self, mascotaModelo, idDuenio):
        self.widget = QDialog()
        self.setupUi(self.widget)
        # Connections
        self.conectarControladorConVista()
        # Mapper
        self.mapearVistaConModelo(mascotaModelo)
        # Carga datos del duenio        
        self.cargarDatosDuenio(idDuenio)
        
    def cargarDatosDuenio(self, idDuenio):
        self.duenio = duenio_modelo()
        self.idDuenio = idDuenio
        apellidoDuenio = self.duenio.apellidoDuenio(idDuenio)
        nombreDuenio = self.duenio.nombreDuenio(idDuenio)
        self.labelidDuenio.setText(str(idDuenio))
        apellido = codecs.decode(apellidoDuenio,'iso8859-1')
        nombre = codecs.decode(nombreDuenio, 'iso8859-1')
        self.labelnombreDuenio.setText(nombre)
        self.labelapellidoDuenio.setText(apellido)
        del(self.duenio)
        fecha=QDate.currentDate()
        year = fecha.year()
        fechaNacimiento =QDate(year, 1, 1)
        self.dateEditFechaNacimiento.setDate(fechaNacimiento)
        self.dateEditFechaAlta.setDate(fecha)
         
    def conectarControladorConVista(self):
        self.widget.connect(self.pushButtonGuardar, SIGNAL("clicked()"), 
                                        self.guardar)        

    def mapearVistaConModelo(self, mascotaModelo):
        self.mascota = mascotaModelo
        self.mapper = QDataWidgetMapper()
        self.mapper.setSubmitPolicy(QDataWidgetMapper.ManualSubmit)
        self.mapper.setModel(self.mascota.model)
        self.mapper.addMapping(self.lineEditRaza, self.mascota.RAZA)
        self.mapper.addMapping(self.lineEditNombre, self.mascota.NOMBRE)
        self.mapper.addMapping(self.lineEditPelaje,  self.mascota.PELAJE)
        self.mapper.addMapping(self.dateEditFechaNacimiento,  self.mascota.FECHANACIMIENTO)
        self.mapper.addMapping(self.dateEditFechaAlta,  self.mascota.FECHAALTA)
        self.mapper.addMapping(self.lineEditTipoMascota,  self.mascota.ESPECIE)
        
    def guardar(self):
        if DEBUG : print "apreto el boton guardar"
        nombre=self.lineEditNombre.text()
        raza=self.lineEditRaza.text()
        pelaje=self.lineEditPelaje.text()
        tipo=self.lineEditTipoMascota.text()
        fechaAlta=self.dateEditFechaAlta.date()
        fechaNacimiento=self.dateEditFechaNacimiento.date()
        sexo= "Macho" if self.radioButtonMacho.isChecked() else "Hembra"
        query = QSqlQuery()
        query.prepare("INSERT INTO animal (raza, sexo, pelaje, fechanacimiento, \
                    fechaalta, id_duenio, nombre,especie)  VALUES  \
                    (:raza, :sexo, :pelaje, :fechanacimiento, :fechaalta, \
                    :id_duenio, :nombre, :tipomascota) ")
        query.bindValue(":raza", QVariant(raza)) 
        query.bindValue(":sexo", QVariant(sexo)) 
        query.bindValue(":pelaje", QVariant(pelaje)) 
        query.bindValue(":fechanacimiento", QVariant(fechaNacimiento)) 
        query.bindValue(":fechaalta", QVariant(fechaAlta)) 
        query.bindValue(":id_duenio", QVariant(self.idDuenio)) 
        query.bindValue(":nombre", QVariant(nombre)) 
        query.bindValue(":especie", QVariant(tipo)) 
        query.exec_()
        self.widget.close()  
        self.mascota.model.select()
